Suggesting game roles for different players based on a player&#39;s gaming statistics from other games

ABSTRACT

In one embodiment of the invention, game specific statistics for previously played games are obtained for each player of a game. Weights and corresponding generic attributes are associated with each game specific statistic. For each game specific statistics, a generic attribute score is computed based on the corresponding weight and generic attribute. In response to a request to play a game, generic attributes are determined for each role of the game. For each generic attribute of each role of the game, the generic attribute scores of each player are compared and a specific role is suggested for each player. If all the players accept their respective and suggested roles, then those roles are assigned to the players. If one or more players rejects a suggested role, that player may request a different role and another role will be suggested for that player.

BACKGROUND

The present invention relates to computers and other data processing systems and software and, more specifically, to games in which different roles may be assigned to different players.

Many electronic games maintain a profile of each player that holds various statistics regarding each players prior performance of the game. These statistics are usually updated as the game is being played. For games that include a variety of roles, these statistics are often collected and stored on a role-by-role basis. Thus, one player may have one set of game specific statistics for one role, and another set of statistics for the same game but a different role. These game specific statistic can often be accessed by other systems.

SUMMARY

According to one embodiment of the present invention, a method includes the following steps: Receiving a first plurality of game specific statistics for a first player, and a second plurality of game specific statistics for a second player. Receiving a plurality of weights, where each one of the plurality of weights is associated with one of the first plurality and the second plurality of game specific statistics, and each one of the plurality of weights has an associated one of a first plurality of generic attributes. Computing a first plurality of generic attribute scores for the first player using one of the first plurality of game specific statistics, and a corresponding one of the plurality of weights and the associated one of the first plurality of generic attributes. Computing a second plurality of generic attribute scores for the second player using one of the second plurality of game specific statistics, and a corresponding one of the plurality of weights and the associated one of the first plurality of generic attributes. Receiving a request to play a game, and suggesting a first role of the game for the first player and a second role of the game for the second player.

According to another embodiment of the present invention, an apparatus includes a storage device comprising computer executable program code and a processor coupled to the storage device. The processor executes the computer executable program code to direct the apparatus to do the following: Receive a first plurality of game specific statistics for a first player, and a second plurality of game specific statistics for a second player. Receive a plurality of weights, where each one of the plurality of weights is associated with one of the first plurality and the second plurality of game specific statistics, and each one of the plurality of weights includes an associated one of a first plurality of generic attributes. Compute a first plurality of generic attribute scores for the first player, where each one of the first plurality of generic attribute scores is computed using one of the first plurality of game specific statistics, and a corresponding one of the plurality of weights and the associated one of the first plurality of generic attributes. Compute a second plurality of generic attribute scores for the second player, where each one of the second plurality of generic attribute scores is computed using one of the second plurality of game specific statistics, and a corresponding one of the plurality of weights and the associated one of the first plurality of generic attributes. Receive a request to play a game, and suggest a first role of the game for the first player and a second role of the game for the second player.

According to another embodiment of the present invention, a computer program product includes a computer readable storage medium having computer readable program code embodied therewith. The computer readable program code is configured to: Receive a first plurality of game specific statistics for a first player, and a second plurality of game specific statistics for a second player. Receive a plurality of weights, where each one of the plurality of weights is associated with one of the first plurality and the second plurality of game specific statistics, and each one of the plurality of weights includes an associated one of a first plurality of generic attributes. Compute a first plurality of generic attribute scores for the first player using one of the first plurality of game specific statistics, and a corresponding one of the plurality of weights and the associated one of the first plurality of generic attributes. Compute a second plurality of generic attribute scores for the second player, using one of the second plurality of game specific statistics, and a corresponding one of the plurality of weights and the associated one of the first plurality of generic attributes. Receive a request to play a game, and suggest a first role of the game for the first player and a second role of the game for the second player.

BRIEF DESCRIPTION OF THE SEVERAL VIEWS OF THE DRAWINGS

FIG. 1 is a block diagram of an exemplary computer or other data processing system in which various embodiments of the present invention may be implemented;

FIG. 2 is a flowchart of one embodiment of a process for generating generic attribute scores based on weights and generic attributes associated with game specific statistics; and

FIG. 3 is a flowchart of one embodiment of a process for suggesting and assigning different players to different roles of a game to be played by two or more players.

DETAILED DESCRIPTION

As will be appreciated by one skilled in the art, aspects of the present invention may be embodied as a system, method or computer program product. Accordingly, aspects of the present invention may take the form of an entirely hardware embodiment, an entirely software embodiment (including firmware, resident software, micro-code, etc.) or an embodiment combining software and hardware aspects that may all generally be referred to herein as a “circuit,” “module” or “system.”

Aspects of the present invention may take the form of a computer program product embodied in one or more computer readable medium(s) having computer readable program code embodied thereon. Any combination of one or more computer readable medium(s) may be utilized. The computer readable medium may be a computer readable signal medium or a computer readable storage medium. A computer readable storage medium may be, for example, but not limited to, an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system, apparatus or device, or any suitable combination of the foregoing. More specific examples (a non-exhaustive list) of the computer readable storage medium would include the following: an electrical connection having one or more wires, a portable computer diskette, a hard disk, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or Flash memory), an optical fiber, a compact disc read-only memory (CD-ROM), an optical storage device, a magnetic storage device, or any suitable combination of the foregoing. In the context of this document, a computer readable storage medium may be any tangible medium that can contain, or store a program for use by or in connection with an instruction execution system, apparatus or device.

A computer readable signal medium may include a propagated data signal with computer readable program code embodied therein; for example, in baseband or as part of a carrier wave. Such a propagated signal may take any of a variety of forms including, but not limited to, electro-magnetic, optical or any suitable combination thereof. A computer readable signal medium may be any computer readable medium that is not a computer readable storage medium and that can communicate, propagate or transport a program for use by or in connection with an instruction execution system, apparatus or device. Program code embodied in a computer readable signal medium may be transmitted using any appropriate medium including, but not limited to, wireless, wire line, optical fiber cable, RF, etc., or any suitable combination of the foregoing.

Computer program code for carrying out operations of the present invention may be written in any combination of one or more programming languages, including an object oriented programming language such as Java™, Smalltalk, C++ or the like, and conventional procedural programming languages, such as the “C” programming language or similar programming languages. (Java and all Java-based trademarks and logos are trademarks of Sun Microsystems, Inc., in the United States, other countries or both.) The program code may execute entirely on the user's computer, partly on the user's computer, as a stand-alone software package, partly on the user's computer and partly on a remote computer, or entirely on a remote computer or server. In the latter scenario, the remote computer may be connected to the user's computer through any type of network, including a local area network (LAN) or a wide area network (WAN), or the connection may be made to an external computer (for example, through the Internet using an Internet Service Provider).

Aspects of the present invention are described below with reference to flowchart illustrations and/or block diagrams of methods, apparatus, systems and computer program products according to various embodiments of the invention. It will be understood that each block of the flowchart illustrations and/or block diagrams, and combinations of blocks in the flowchart illustrations and/or block diagrams, can be implemented by computer program instructions. These computer program instructions may be provided to a processor of a general purpose computer, special purpose computer, or other programmable data processing apparatus to produce a machine, such that the instructions, which execute via the processor of the computer or other programmable data processing apparatus, create means for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks.

These computer program instructions may also be stored in a computer readable medium that can direct a computer or other programmable data processing apparatus to function in a particular manner, such that the instructions stored in the computer readable medium produce an article of manufacture including instructions which implement the function/act specified in the flowchart and/or block diagram block or blocks. The computer program instructions may also be loaded onto a computer or other programmable data processing apparatus to cause a series of operational steps to be performed in the computer or other programmable apparatus to produce a computer-implemented process, such that the instructions that execute in the computer or other programmable apparatus provide processes for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks.

FIG. 1 is a block diagram of an exemplary computer or other data processing system in which various embodiments of the present invention may be implemented. Referring to this figure, bus subsystem 102 interconnects the various components of data processing system 100, such as processor 104, memory 106, persistent storage 108, interface subsystem 110 and video subsystem 112. Bus subsystem 102 preferably includes one or more computer buses, and may also include one or more circuits to interconnect the various buses and components of data processing system 100. These circuits may include memory controllers, input/output controllers, and bridge circuits that bridge from one bus technology to another.

The terms “bus” and “bus subsystem” should be broadly interpreted to include other interconnect technologies or combinations thereof in which power, timing, data or other signals are transferred between the various components of a data processing system, or between two or more data processing systems. For example, technologies commonly classified as network and input/output, such as Ethernet and USB, and various wired, wireless, optical and infrared communication technologies may also be used to interconnect the various components of data processing system 100.

Processor 104 is connected to bus subsystem 102 via bus 102 a, such as a well known Front Side Bus. Processor 104 is, preferably, a well known integrated circuit, central processing unit (CPU), but it may be any data processing subsystem that processes data or executes computer program instructions, which are also known as computer executable code, computer readable program code, and similar terms. These computer program instructions and data are loaded into memory 106, which is coupled to processor 104 via memory bus 102 b, bus subsystem 102, and bus 102 a. Processor 104, in combination with a memory controller circuit in bus subsystem 102, fetches the data and program instructions stored in memory 106. Memory 106 may be any memory or storage device that is capable of storing and retrieving data or program instructions, but is preferably one or more semiconductor, random access memory (RAM) circuits.

Persistent storage 108 is used to store data, program instructions and other information on a more permanent or persistent basis than that of memory 106, which typically uses a fast but volatile memory technology wherein all information is lost if the power to the memory is disrupted. Persistent storage 108 is coupled to bus subsystem 102 via storage bus 102 c, examples of which include well known IDE, SATA and SCSI buses, although other bus technologies may also be used. Data, program instructions and other information may be stored in persistent storage 108, and loaded into memory 106. Persistent storage 108 is coupled to memory 106 via bus 102 c, an I/O controller circuit and a memory controller circuit in bus subsystem 102, and memory bus 102 b.

Persistent storage may be any memory or information storage device that is capable of storing data, program instructions or other information. Examples of typical persistent storage devices include magnetic storage devices (such as a hard disk drive), optical storage devices (such as a CD-ROM) and semiconductor storage devices (such as EEPROMs and flash memory). Persistent storage 108 may also include drives, connectors or other devices that accept removable storage media, such as floppy magnetic disks, optical disks and semiconductor flash memory. Persistent storage 108, as well as memory 106, may be internally located within data processing system 100, or externally located and coupled to the data processing system through Interface subsystem 110 or otherwise.

Interface subsystem 110 is coupled to bus subsystem 102 via bus 102 d. Interface subsystem 110 may include one or more input/output (I/O) and network ports to which devices, systems and networks that are external to data processing system 100 can be connected. Examples of such devices, systems and networks include keyboards, pointing devices (such as a mouse), printers, scanners, storage devices, local area networks (LANs), wide area networks (WANs), and other data processing systems. Each of these I/O and network ports may be implemented in a different I/O or network technology, examples of which include Universal Serial Bus (USB), Ethernet, IEEE 1394 (FireWire), Small Computer System Interface (SCSI) and IEEE 802.11 (wireless LAN). In some data processing systems, portions of interface subsystem 110 may be implemented in an I/O controller circuit that is part of bus subsystem 102. FIG. 1 illustrates exemplary Ethernet, USB and IEEE 1394 ports of interface subsystem 110, but other ports and port technologies may be included.

Video subsystem 112, the output of which may be connected to a video display, is coupled to bus subsystem 102 via video bus 102 e. Examples of video bus technologies include Accelerated Graphics Port (AGP) and PCI Express, although other bus technologies may be used to implement video bus 102 e.

A computer program product 120 includes computer readable program code 122 embodied in a computer readable medium 124, which may be a storage medium or a signal medium. Computer readable medium 124 may include memory 106, persistent storage 108 or any storage device, including a storage device that is external to data processing system 100. An external storage device may be coupled to data processing system 100 through interface subsystem 110 or otherwise. Computer readable medium 124 may also be a removable storage medium that is capable of being inserted into an internal or external drive or other device that is adapted to read the removable storage medium. Other examples, variations and details of a computer program product, a computer readable medium and computer program code are described above.

FIG. 2 is a flowchart of one embodiment of a process for generating Generic Attribute Scores based on weights and Generic Attributes associated with Game Specific Statistics. Referring to this figure, the process starts at step 202. In step 204, the variables X, Y and Z are set to 1. The variable “X” is used to specify a particular Player, the variable “Y” is used to specify a particular Game, and the variable “Z” is used to specify a particular Game Specific Statistic (“GSS”).

In step 206, Game Specific Statistics are received for each game that Player X has previously played and for which Game Specific Statistics have been stored. These Game Specific Statistics may be stored on a server, uploaded to a website that stores game statistics, or otherwise made available to this process by any other storage and delivery device. The first time through the loop X=1, so Game Specific Statistics will initially be obtained for Player 1. The Game Specific Statistics are, as the name implies, specific to each game. For example, a basketball game may have Game Specific Statistics for various positions that a player has previously played, such as guard, point guard, forward and center. Each Game Specific Statistic will have an associated numeric value (“q”) to indicate the player's quantitative proficiency relative to that particular Game Specific Statistic, as well an identification of the particular statistic (“STAT”). Thus, the Game Specific Statistic can be viewed as an ordered pair of a numeric value and the associated statistic: (q, STAT). Using the basketball game and the point guard position as an example, an exemplary Game Specific Statistic would be: GSS=(0.75, Point Guard). Thus, in this example, the specific statistic is “Point Guard” and the player's cumulative quantitative proficiency for previous games played as Point Guard is 0.75.

In step 208, weights (“w”) and corresponding Generic Attributes (“GA”) are received. Each of these weights and corresponding Generic Attributes is associated with a particular Game Specific Statistic of a game that the player has previously played. The weight itself may be a number, while the Generic Attribute may be a class of attribute, such as “reaction time”, or “accuracy.” Collectively, the weight, the corresponding Generic Attribute and the associated Game Specific Statistic may be referred to as the Weight (capital “W”), which may be expressed as a triplet (3-tuple): W=(w, GA, GSS). Using the basketball game and reaction time as an example, an exemplary Weight would be: (0.5, Reaction Time, Point Guard). Thus, in this example, the Game Specific Statistic of “Point Guard” would map to the Generic Attribute of “Reaction Time” and the weighting factor “w” is 0.5. In addition to mapping this particular Game Specific Statistic to the Generic Attribute “Reaction Time”, it should be understood that the same Game Specific Statistic could also be mapped to a different Generic Attribute by the specification of an additional and different Weight. Weights may be subjectively assigned (both the weight “w” and the Generic Attribute “GA” portions of a Weight) to each Game Specific Statistic and may be stored in a database for access by various players.

In step 210, for Game Specific Statistic Z of Game Y of Player X, a Generic Attribute Score (“GAS”) is computed based on the weight and associated Generic Attribute that correspond to Game Specific Statistic Z. As the process makes successive loops through step 210, eventually all Generic Attribute Scores will be calculated for each Game Specific Statistic, for each game and for each player. If a particular Game Specific Statistics does not have an associated Weight, then no corresponding Generic Attribute Score will be calculated. Also, a particular Game Specific Statistic may have more than one weight and associated Generic Attribute associated with it, in which case multiple Generic Attribute Scores may be calculated for that Game Specific Statistic and player. A Generic Attribute Score includes both a numeric score (“s”), as well as a Generic Attribute (“GA”), and may also be thought of as an ordered pair: GAS=(s, GA). For example, GAS=(5.2, Accuracy).

The process of computing a Generic Attribute Score may be accomplished by multiplying the weight (“w”) by the associated numeric value (“q”) of the Game Specific Statistic to obtain the score “s”, and the Generic Attribute portion of the Generic Attribute Score is the same as the Generic Attribute that is associated with the weight. Stated mathematically:

GAS=(q*w,GA)

In addition to multiplication, other processes may be used to compute a Generic Atribute Score based on the weight “w” and the value “q.”

In step 212, the Generic Attribute Score for Player X is stored. On successive times through the loop, different Generic Attribute Scores will be calculated and stored for various Game Specific Statistics, for various games, and for different players. It should be noted that it is possible and maybe likely that there will be more than one Generic Attribute Score calculated for the same Generic Attribute of the same player. In such a situation, the various Generic Attribute Scores for the same Generic Attribute can be combined by some process such as averaging, although any other process for achieving a single score from a plurality of scores may be suitable.

In step 214, the process checks to determine if Z is the last Game Specific Statistic for Game Y. If it is not, then the process branches to step 216 wherein Z is incremented to point to the next Game Specific Statistic for Game Y and Player X. Then the process jumps from step 216 back to step 210. However, if this is the last Game Specific Statistic, the process branches to step 218.

In step 218, the process checks to determine if Y is the last game for Player X. If it is, the process branches to step 222. If it is not the last game, then the process branches to step 220 where Y is incremented to point to the next game for Player X, and Z is set to equal 1. Returning to step 222, the process checks to determine if X is pointing to the last player. If it is not, the process branches to step 224, where X is incremented to point to the next player. However, if X is pointing to the last player, then the process branches to step 226 where the process ends.

FIG. 3 is a flowchart of one embodiment of a process for suggesting and assigning different players to different roles of a game to be played by two or more players. Referring to this figure, the process starts at step 302. In step 304, a request is received from two or more players to play a game. In step 306, a determination is made as to the Generic Attributes that correspond to each role of the game to be played. As with the Weights as described above, the Generic Attributes that correspond to the various roles of the game to be played may be subjectively assigned and stored in a database. In step 308, each player's Generic Attribute Scores (for example, as calculated by the process of FIG. 2) are obtained.

In step 310, for each Generic Attribute of each role of a game, the corresponding Generic Attribute Scores of each player are compared, and a role for each player is suggested. For example, for a basketball game and the role of “point guard”, the corresponding Generic Attributes might be “reaction time”, “accuracy” and “leadership.” So the Generic Attribute Scores corresponding to “reaction time”, “accuracy” and “leadership” for Player 1 are obtained and accumulated, such as by adding or averaging all three of these Generic Attribute Scores to produce an accumulated score for Player 1 in the role point guard. This is then repeated for each player, until each player has an accumulated score for the role of point guard. These accumulated scores for each player are then compared, and one player is suggested to assume the role of point guard, which may be the player with the higher accumulated score for a role, although other methods of suggesting a player for a particular role may be used.

In step 312, each player has an opportunity to accept or reject their suggested role. Players who accept their suggested role are considered to be “assigned players”, while those players who reject their suggested role are considered to be “unassigned players.” Unassigned players who have rejected the role that was suggested have an opportunity in step 314 to request a specific role. The process then jumps back to step 310, where new role suggestions are made for all unassigned players. Once all the unassigned players have accepted a role in step 312, the process branches to step 316 were the roles are assigned and the game may be played. In step 318, once the game is completed, each player's skills are saved and the process ends in step 320.

Other ways are available to map Game Specific Statistics to Generic Attribute Scores, examples of which follow. Players may be compared to other players of the same game, such as a player's ranking, which may be expressed as a percentile. The number of games played by each of the players, both the number of games played of the same game, as well as games of a similar genre. For the later, the number of games played can be weighted more for certain games and less for others. Players may also be compared in terms of game achievements for the same game or games of a similar genre. The time to achieve a certain objective in a game may also be used as a Generic Attribute, where the lower the time the better the Generic Attribute Score. Head-to-head matchups, such as in a racing game where Player 1 and Player 2 are racing against one another. In such a situation, each player's win/loss ratio can be used as a Generic Attribute Score.

The processes described above and illustrated in FIG. 2 and FIG. 3 can be implemented in a data processing system, such as the one illustrated in FIG. 1. In operation, a request is received from two or more players to play a game that has more than one role. Generic Attributes corresponding to each role of the game are obtained. These Generic Attributes may be subjectively determined and stored in a database, which may be accessed at the time the players make the request to play the game.

Game Specific Statistics are received for each game that each player has previously played and for which these statistics are available. These Game Specific Statistics may include an identification of a particular statistic, as well as a numeric value to indicate the player's proficiency with respect to that particular statistic. A weight and a corresponding Generic Attribute are associated with each of these Game Specific Statistics. The weight may be a number, while the associated Generic Attribute may be a class of attribute. Each Game Specific Statistic may have more than one weight and Generic Attribute associated with it.

For each Game Specific Statistic for each game of each player, one or more Generic Attribute Scores is calculated based on the corresponding weight and Generic Attribute. One way to calculate the numeric portion of the Generic Attribute Score would be to multiple the weight by the numeric value of the Game Specific Statistic. For each Generic Attribute of each role of the game, the corresponding Generic Attribute Scores of each player are compared, and a role for each player is suggested. Each player then has an opportunity to accept or reject their suggested role. A player who has rejected a suggested role may request a specific role, and new roles are suggested for all players who have not accepted a role. Once all players have accepted a role, the roles are assigned and the game may be played.

The flowchart and block diagrams in the figures illustrate the architecture, functionality, and operation of possible implementations of systems, methods, and computer program products according to various embodiments of the present invention. In this regard, each block in the flowchart or block diagrams may represent a module, segment, or portion of code, which comprises one or more executable instructions for implementing a specified logical function. It should also be noted that, in some alternative implementations, the functions noted in the block might occur out of the order noted in the figures. For example, two blocks shown in succession may, in fact, be executed substantially concurrently, or the blocks may sometimes be executed in the reverse order, depending upon the functionality involved. It will also be noted that each block of the block diagrams and/or flowchart illustrations, and combinations of blocks in the block diagrams and/or flowchart illustrations, can be implemented by special purpose hardware-based systems that perform the specified functions or acts, or combinations of special purpose hardware and computer instructions.

The terminology used herein is for the purpose of describing particular embodiments only and is not intended to be limiting of the invention. As used herein, the singular forms “a”, “an” and “the” are intended to include the plural forms as well, unless the context clearly indicates otherwise. It will be further understood that the terms “comprises” and/or “comprising,” when used in this specification, specify the presence of stated features, integers, steps, operations, elements, and/or components, but do not preclude the presence or addition of one or more other features, integers, steps, operations, elements, components, and/or groups thereof.

The corresponding structures, materials, acts, and equivalents of all means or step plus function elements in the claims below are intended to include any structure, material, or act for performing the function in combination with other claimed elements as specifically claimed. The description of the present invention has been presented for purposes of illustration and description, but is not intended to be exhaustive or limited to the invention in the form disclosed. Many modifications and variations will be apparent to those of ordinary skill in the art without departing from the scope and spirit of the invention. The embodiment was chosen and described in order to best explain the principles of the invention and the practical application, and to enable others of ordinary skill in the art to understand the invention for various embodiments with various modifications as are suited to the particular use contemplated. 

1. A method, comprising: receiving a first plurality of game specific statistics for a first player, and a second plurality of game specific statistics for a second player; receiving a plurality of weights, each one of the plurality of weights being associated with one of the first plurality and the second plurality of game specific statistics, each one of the plurality of weights comprising an associated one of a first plurality of generic attributes; computing a first plurality of generic attribute scores for the first player, each one of the first plurality of generic attribute scores being computed using one of the first plurality of game specific statistics, and a corresponding one of the plurality of weights and the associated one of the first plurality of generic attributes; computing a second plurality of generic attribute scores for the second player, each one of the second plurality of generic attribute scores being computed using one of the second plurality of game specific statistics, and a corresponding one of the plurality of weights and the associated one of the first plurality of generic attributes; receiving a request to play a game; and suggesting a first role of the game for the first player and a second role of the game for the second player.
 2. The method of claim 1, further comprising: determining a second plurality of generic attributes corresponding to the first and the second roles of the game; and for each one of the second plurality of generic attributes, comparing the corresponding one of the first plurality of generic attribute scores for the first player to the corresponding one of the second plurality of generic attribute scores for the second player.
 3. The method of claim 2, further comprising: multiplying one of the first plurality of game specific statistics by a corresponding one of the plurality of weights to compute the corresponding one of the first plurality of generic attribute scores for the first player.
 4. The method of claim 1, further comprising: in response to the first player not accepting the first role and the first player requesting a third role, suggesting the third role for the first player.
 5. The method of claim 1, further comprising: in response to the first player accepting the first role and the second player accepting the second role, assigning the first role to the first player and the second role to the second player.
 6. The method of claim 1, further comprising: multiplying one of the first plurality of game specific statistics by a corresponding one of the plurality of weights to compute the corresponding one of the first plurality of generic attribute scores for the first player.
 7. An apparatus, comprising: a storage device comprising computer executable program code; and a processor coupled to the storage device, where the processor executes the computer executable program code to direct the apparatus to: receive a first plurality of game specific statistics for a first player, and a second plurality of game specific statistics for a second player; receive a plurality of weights, each one of the plurality of weights being associated with one of the first plurality and the second plurality of game specific statistics, each one of the plurality of weights comprising an associated one of a first plurality of generic attributes; compute a first plurality of generic attribute scores for the first player, each one of the first plurality of generic attribute scores being computed using one of the first plurality of game specific statistics, and a corresponding one of the plurality of weights and the associated one of the first plurality of generic attributes; compute a second plurality of generic attribute scores for the second player, each one of the second plurality of generic attribute scores being computed using one of the second plurality of game specific statistics, and a corresponding one of the plurality of weights and the associated one of the first plurality of generic attributes; receive a request to play a game; and suggest a first role of the game for the first player and a second role of the game for the second player.
 8. The apparatus of claim 7, where the processor further executes the computer executable program code to direct the apparatus to: determine a second plurality of generic attributes corresponding to the first and the second roles of the game; and for each one of the second plurality of generic attributes, compare the corresponding one of the first plurality of generic attribute scores for the first player to the corresponding one of the second plurality of generic attribute scores for the second player.
 9. The apparatus of claim 8, where the processor further executes the computer executable program code to direct the apparatus to: multiply one of the first plurality of game specific statistics by a corresponding one of the plurality of weights to compute the corresponding one of the first plurality of generic attribute scores for the first player.
 10. The apparatus of claim 7, where the processor further executes the computer executable program code to direct the apparatus to: in response to the first player not accepting the first role and the first player requesting a third role, suggest the third role for the first player.
 11. The apparatus of claim 7, where the processor further executes the computer executable program code to direct the apparatus to: in response to the first player accepting the first role and the second player accepting the second role, assign the first role to the first player and the second role to the second player.
 12. The apparatus of claim 7, where the processor further executes the computer executable program code to direct the apparatus to: multiply one of the first plurality of game specific statistics by a corresponding one of the plurality of weights to compute the corresponding one of the first plurality of generic attribute scores for the first player.
 13. A computer program product comprising a computer readable storage medium having computer readable program code embodied therewith, the computer readable program code comprising: computer readable program code configured to receive a first plurality of game specific statistics for a first player, and a second plurality of game specific statistics for a second player; computer readable program code configured to receive a plurality of weights, each one of the plurality of weights being associated with one of the first plurality and the second plurality of game specific statistics, each one of the plurality of weights comprising an associated one of a first plurality of generic attributes; computer readable program code configured to compute a first plurality of generic attribute scores for the first player, each one of the first plurality of generic attribute scores being computed using one of the first plurality of game specific statistics, and a corresponding one of the plurality of weights and the associated one of the first plurality of generic attributes; computer readable program code configured to compute a second plurality of generic attribute scores for the second player, each one of the second plurality of generic attribute scores being computed using one of the second plurality of game specific statistics, and a corresponding one of the plurality of weights and the associated one of the first plurality of generic attributes; computer readable program code configured to receive a request to play a game; and computer readable program code configured to suggest a first role of the game for the first player and a second role of the game for the second player.
 14. The computer program product of claim 13, further comprising: computer readable program code configured to determine a second plurality of generic attributes corresponding to the first and the second roles of the game; and computer readable program code configured to, for each one of the second plurality of generic attributes, compare the corresponding one of the first plurality of generic attribute scores for the first player to the corresponding one of the second plurality of generic attribute scores for the second player.
 15. The computer program product of claim 14, further comprising: computer readable program code configured to multiply one of the first plurality of game specific statistics by a corresponding one of the plurality of weights to compute the corresponding one of the first plurality of generic attribute scores for the first player.
 16. The computer program product of claim 13, further comprising: computer readable program code configured to, in response to the first player not accepting the first role and the first player requesting a third role, suggest the third role for the first player.
 17. The computer program product of claim 13, further comprising: computer readable program code configured to, in response to the first player accepting the first role and the second player accepting the second role, assign the first role to the first player and the second role to the second player.
 18. The computer program product of claim 13, further comprising: computer readable program code configured to multiply one of the first plurality of game specific statistics by a corresponding one of the plurality of weights to compute the corresponding one of the first plurality of generic attribute scores for the first player. 